﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Tipler.Siniflar;
using Tipler.Enumlar;
using Tipler.DataSetler;
using DataServis;
using System.Data;

namespace IsKurallari.Log
{
    public class LogIsKurali : TemelIsKurali
    {
        #region LogGoruntuleme Uyeleri

        public FonksiyonSonuc<LogDataSet> LogGetir()
        {
            FonksiyonSonuc<LogDataSet> Sonuc = new FonksiyonSonuc<LogDataSet>();
            LogDataSet SonucDataSet = new LogDataSet();
            VeriArabirim oVeriKatmani = null;
            StringBuilder sb = new StringBuilder();

            try
            {
                oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();

                sb.Append(@"SELECT * FROM " + SonucDataSet.Log.TableName);
                sb.Append(" WHERE ");
                sb.Append(" ORDER BY " + SonucDataSet.Log.IslemTarihiColumn.ColumnName);

                oVeriKatmani.VeriGetir(SonucDataSet, sb.ToString());
                Sonuc.Sonuc = SonucDataSet;
            }
            catch (Exception ex)
            {
                Sonuc.Ex = ex;
                Sonuc.Hata = Sonuc.Sonuc.Log.TableName + "'dan veri okunamadı.";
                Sonuc.HataKod = "10001";
            }
            return Sonuc;
        }

        public FonksiyonSonuc<LogDataSet> LogGetir(int LOGID)
        {
            FonksiyonSonuc<LogDataSet> oSonuc = new FonksiyonSonuc<LogDataSet>();
            LogDataSet ds = new LogDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();

                List<IDbDataParameter> pParams = new List<IDbDataParameter>();
                pParams.Add(oVeriKatmani.CreateParameter("LOGID", DbType.Int32, LOGID));

                oVeriKatmani.VeriGetir(ds, "SELECT * FROM " + oSonuc.Sonuc.Log.TableName + " WHERE " + oSonuc.Sonuc.Log.LogIDColumn.ColumnName + "= " + PrmSgn + "LOGID", pParams);
                oSonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                oSonuc.Ex = ex;
                oSonuc.Hata = oSonuc.Sonuc.Log.TableName + "'dan veri okunamadı.";
                oSonuc.HataKod = "10001";
            }
            return oSonuc;
        }

        public FonksiyonSonuc<LogDataSet> KosulluLogGetir(DateTime BasTarih, DateTime SonTarih, int? KullaniciID)
        {
            FonksiyonSonuc<LogDataSet> Sonuc = new FonksiyonSonuc<LogDataSet>();

            List<IDbDataParameter> oParametreler = new List<IDbDataParameter>();
            VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();

            LogDataSet SonucDataSet = new LogDataSet();
            StringBuilder sb = new StringBuilder();

            try
            {
                oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();

                sb.Append(@"SELECT * FROM " + SonucDataSet.Log.TableName);
                sb.Append(" WHERE KullaniciID IS NOT NULL ");

                if (BasTarih != DateTime.MinValue)
                {
                    sb.Append(" AND " + SonucDataSet.Log.IslemTarihiColumn.ColumnName + ">=" + PrmSgn + "BasTar");
                    oParametreler.Add(oVeriKatmani.CreateParameter("BasTar", DbType.DateTime, BasTarih));
                }
                if (SonTarih != DateTime.MinValue)
                {
                    sb.Append(" AND " + SonucDataSet.Log.IslemTarihiColumn.ColumnName + "<=" + PrmSgn + "BitTar");
                    oParametreler.Add(oVeriKatmani.CreateParameter("BitTar", DbType.DateTime, SonTarih));
                }

                if (KullaniciID.HasValue && KullaniciID != -1)
                {
                    sb.Append(" AND " + SonucDataSet.Log.KullaniciIDColumn.ColumnName + "=" + PrmSgn + "KullaniciID");
                    oParametreler.Add(oVeriKatmani.CreateParameter("KullaniciID", DbType.Int32, KullaniciID));
                }

                sb.Append(" ORDER BY " + SonucDataSet.Log.IslemTarihiColumn.ColumnName);

                oVeriKatmani.VeriGetir(SonucDataSet, sb.ToString(), oParametreler);
                Sonuc.Sonuc = SonucDataSet;
            }
            catch (Exception ex)
            {
                Sonuc.Ex = ex;
                Sonuc.Hata = Sonuc.Sonuc.Log.TableName + "'dan veri okunamadı.";
                Sonuc.HataKod = "10001";
            }
            return Sonuc;
        }

        #endregion
    }
}
